home *** CD-ROM | disk | FTP | other *** search
- <bindings
- xmlns="http://www.mozilla.org/xbl"
- xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- xmlns:xbl="http://www.mozilla.org/xbl">
-
- <binding id="btsearchbar">
- <resources>
- <stylesheet src="btsearchtextbox.css"/>
- </resources>
- <content>
- <xul:textbox class="bt_searchbar_textbox3"
- anonid="textbox"
- type="autocomplete">
- </xul:textbox>
- <xul:button class="bt_searchbar_button"
- anonid="button">
- </xul:button>
-
- </content>
-
- <handlers>
- <handler event="command"><![CDATA[
- switch (event.originalTarget.getAttribute("anonid")) {
- case "button":
- this.handleSearchCommand(event);
- break;
- }
- ]]>
- </handler>
- </handlers>
-
- <implementation>
- <constructor>
- <![CDATA[
- if (this.hasAttribute('brand')) {
- this.observerService = Components.classes["@mozilla.org/observer-service;1"]
- .getService(Components.interfaces.nsIObserverService)
-
- this.brandObject = BrandThunder.clients[this.getAttribute('brand')];
- }
- ]]>
- </constructor>
- <field name="observerService"/>
- <method name="handleSearchCommand">
- <parameter name="event"/>
- <parameter name="text"/>
- <body><![CDATA[
- if (!text) {
- text = document.getAnonymousElementByAttribute(this, "anonid", "textbox").value;
- }
- var searchSvc = Components.classes["@mozilla.org/browser/search-service;1"]
- .getService(Components.interfaces.nsIBrowserSearchService);
- var engineToUse;
- var additionalChars = "";
- var defaultEngine = searchSvc.getEngineByName(this.brandObject.defaultSearchEngine.replace(" - BT",""));
- if (this.hasAttribute("engine")) {
- engineToUse = searchSvc.getEngineByName(this.getAttribute("engine"));
- }
- if (!engineToUse) {
- if (searchSvc.currentEngine.description.match(" - BT")) {
- engineToUse = searchSvc.currentEngine;
- } else if (defaultEngine) {
- engineToUse = defaultEngine;
- } else {
- /* Try to find another BT engine to use */
- var bingEngine = searchSvc.getEngineByName("Bing");
- var askEngine = searchSvc.getEngineByName("Ask");
- var yahooEngine = searchSvc.getEngineByName("Yahoo");
- if (bingEngine && bingEngine.description.match(" - BT")) {
- engineToUse = bingEngine;
- } else if (askEngine && askEngine.description.match(" - BT")) {
- engineToUse = askEngine;
- } else if (yahooEngine && yahooEngine.description.match(" - BT")) {
- engineToUse = yahooEngine;
- } else {
- engineToUse = searchSvc.currentEngine;
- }
- }
- }
-
- if (engineToUse.description == "Yahoo! - BT") {
- additionalChars = "L";
- }
- if (this.hasAttribute("version")) {
- if (this.observerService) {
- var subject = {};
- subject.wrappedJSObject = this.brandObject;
- this.observerService.notifyObservers(subject, "brandthunder", "bt-" + this.brandObject.shortName + "-searchbartest-" + this.getAttribute("version"));
- }
- }
- var submission = engineToUse.getSubmission(text, null);
- openUILinkIn(submission.uri.spec + additionalChars, "tab", null, submission.postData);
- ]]></body>
- </method>
- </implementation>
- </binding>
-
- <binding id="bt-searchbar-textbox"
- extends="chrome://global/content/bindings/autocomplete.xml#autocomplete">
- <implementation>
- <method name="onTextEntered">
- <parameter name="event"/>
- <body><![CDATA[
- document.getBindingParent(this).handleSearchCommand(event, this.value);
- ]]></body>
- </method>
- </implementation>
- </binding>
- </bindings>
-